<?php

namespace Site\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Site\UtilisateurBundle\Entity\Etudiant;
use Site\UtilisateurBundle\Entity\Utilisateur;
use Site\GeneralBundle\Entity\Ue;
use Site\AdminBundle\Csv\Csv;

class GestionController extends Controller
{
    //.....//
    public function ajouterEtudiantAction()
    {
        $em = $this->getDoctrine()->getManager();
        $request = $this->get('request');

        $listeUe = $em->getRepository('SiteGeneralBundle:Ue')->findAll();
        $arrayUE = array();
        foreach($listeUe as $ue)
        {
            $arrayUE[$ue->getId()] = $ue->getCode();
        }

        if ($request->getMethod() == 'POST')
        {
            $csv = $this->remplirCsv($request);

            $fichierCsv = fopen($csv->getFichier(), "r");
            $typeDonnees = $csv->getTypeDonnees();

            while(($ligne = fgetcsv($fichierCsv, 0, $csv->getDelimiter(), 
                    $csv->getEntourage())) != NULL)
            {
                $utilisateur = new Utilisateur;
                $etudiant = new Etudiant;

                for ($i = 0; $i < 6; $i++)
                {
                    switch ($typeDonnees[$i])
                    {
                        case 'username' :
                            $utilisateur->setUsername($ligne[$i]);
                            $utilisateur->setUsernameCanonical($ligne[$i]);
                            break;
                        case 'email' :
                            $utilisateur->setEmail($ligne[$i]);
                            $utilisateur->setEmailCanonical($ligne[$i]);
                            break;
                        case 'nom' :
                            $utilisateur->setNom($ligne[$i]);
                            break;
                        case 'prenom' :
                            $utilisateur->setPrenom($ligne[$i]);
                            break;
                        case 'password' :
                            $mdp = $ligne[$i];
                            $encodeur = $this->get('security.encoder_factory')
                                              ->getEncoder($utilisateur);
                            $utilisateur->setPassword($encodeur->encodePassword
                                          ($mdp, $utilisateur->getSalt()));
                            break;
                        case 'numEtud' :
                            $etudiant->setNumEtud($ligne[$i]);
                            break;
                    }
                }

                $utilisateur->setType('e');
                $etudiant->setUe($request->get('ue'));
                $utilisateur->setEtudiant($etudiant);

                $em->persist($etudiant);
                $em->persist($utilisateur);
                $em->flush();
            }

            $flash = "Tous les etudiants ont ete ajoute avec succes.";
            $typeFlash = "success";
            return $this->render('SiteAdminBundle:Gestion:ajouterEtudiant.html.twig',
                    array('afficherFlash' => 1, 'typeFlash' => $typeFlash, 
                            'flash' => $flash, 'listeUe' => $listeUe));
        }
        else
        {

            return $this->render('SiteAdminBundle:Gestion:ajouterEtudiant.html.twig', 
                array('afficherFlash' => 0, 'listeUe' => $listeUe));
        }
    }


    public function remplirCsv($request)
    {
        $uploaddir = 'fichiers/';
        $uploadfile = $uploaddir . basename($_FILES['fichier']['name']);
        move_uploaded_file($_FILES['fichier']['tmp_name'], $uploadfile);

        $csv = new Csv($uploadfile);
        $csv->setDelimiter($request->get('delimiteur'));
        $csv->setEntourage($request->get('entourage'));

        $typeDonnees = array();

        for ($i = 0; $i < 6; $i++)
            $typeDonnees[$i] = $request->get('variable' . $i);

        $csv->setTypeDonnees($typeDonnees);

        return $csv;
    }


    public function sauverBDDAction() 
    { }
}
